#include <stdio.h>

int main()
{
    // 用冒泡排序法排序三维数组
    // 先把三维数组放到一维数组
    // 再把一维数组排序
    // 然后把一维数组放到三维数组
    // 最后排好序的打印三维数组
    // 四位数组，五维数组。。。都可以这样排序
    int a[2][3][5] = { { {32,56,21,74,32}, {321,312,12,2,32}, {32,12,54,75,78} },
        { {321,321,453,54,65}, {32,1,32,1,65}, {21,3,32,32,32} } };
    int b[30] = { 0 };

    int i, j, k;
    int index = 0;

    // 把三位数组的值赋给1维数组
    for (i = 0; i < 2;i++)
    {
        for (j = 0; j < 3; j++)
        {
            for(k = 0; k < 5; k++)
            {
                b[index] = a[i][j][k];
                index++;
            }
        }
    }


    // 一位数组排序
    for (i = 0; i < 30; i++)
    {
        for (j = 1; j < 30 - i; j++)
        {
            if (b[j - 1] > b[j])
            {
                int tmp = b[j];
                b[j] = b[j - 1];
                b[j - 1] = tmp;
            }
        }
    }


    // 把一位数组的值赋给三维数组
    index = 0;
    for (i = 0; i < 2;i++)
    {
        for (j = 0; j < 3; j++)
        {
            for(k = 0; k < 5; k++)
            {
                a[i][j][k] = b[index]; 
                index++;
            }
        }
    }




    // 遍历三位数组，并打印
    for (i = 0; i < 2;i++)
    {
        for (j = 0; j < 3; j++)
        {
            for(k = 0; k < 5; k++)
            {
                printf("a[%d][%d][%d] = %d\n", i, j, k, a[i][j][k]);
            }
        }
    }
    return 0;
}

